# !/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Time        : 2021/9/12 09:12
@Author      : Albert Darren
@Contact     : 2563491540@qq.com
@File        : Experiment_1.py
@Version     : Version 1.0.0
@Description : TODO
@Created By  : PyCharm
"""
import numpy as np


def normalize(array):
    """
    归一化数组
    :param array: 原始数组
    :return: 归一化数组
    """
    max_val, min_val = np.max(array), np.min(array)
    return (array - min_val) / (max_val - min_val)


def zero_one_array(rows, columns):
    """
    创建一个边界值为0而内部都是1的数组
    :param rows: 行数
    :param columns: 列数
    :return: 边界值为0而内部都是1的数组
    """
    zeros_array = np.zeros(shape=(rows, columns))
    zeros_array[1:rows - 1, 1:columns - 1] = 1
    return zeros_array


# 在数组主对角线上创建一个值为0,1,2,3,4的5x5矩阵。
# diagonal_matrix = np.diag(np.arange(5))
# print("数组主对角线上值为0,1,2,3,4的5x5矩阵:\n{}".format(diagonal_matrix))
# 生成一个随机的8*8矩阵，找出最大值和最小值，然后把最大值和最小值分别用1和0表示，其他值则介于在0和1中间。求出对角线上的元素，按从小到大顺序输出。
# np.random.seed(1)
# rand_matrix = np.random.randint(10, size=(8, 8))
# diag_array = np.diag(rand_matrix)
# print("""随机的8*8矩阵:
# {}
# 归一化的8*8矩阵:
# {}
# 对角线上的元素，按从小到大顺序输出:
# {}""".format(rand_matrix, normalize(rand_matrix), diag_array[np.argsort(diag_array)]))
# 创建一个边界值为0而内部都是1的数组。
print("4*5的边界值为0而内部都是1的数组:\n{}".format(zero_one_array(4, 5)))
